<?php
/**
 * IndexAction 
 * 后台用户管理模块
 */
class IndexAction extends Action{
	/**
	 *  管理员id
	 */
	// private $admin_id = null;
	/**
	 *  管理员类型(0表示“超级管理员”；1表示“辅导员和教务员”)
	 */
	// private $permission = null;
	/**
	 *  管理员名字
	 */
	// private $real_name = null;

	/**
	 * index 
	 * 仅供测试测试使用
	 * @access public
	 * @return void
	 */
	public function index(){
        // $this->display();
		$this->redirect('admin');
    }


	/**
	 * login
	 * 管理员登陆页面
	 *     通过POST的方式传入账号,密码和验证码,变量名分别为login_name,password,verify
	 *       成功则跳转至管理页面,并设置SESSION['admin_id']用于记录管理员id,和SESSION['permission']记录管理员类型(0表示“超级管理员”；1表示“辅导员和教务员”)
	 *       失败则跳转回登录页面,并提示相应错误
	 * @access public
	 * @return void
	 */
	public function login(){
		// dump($_POST);
		// dump($_SESSION);
		if(isset($_POST['verify']) and isset($_POST['login_name']) and isset($_POST['password'])){
			if(md5($_POST['verify'])!==$_SESSION['verify']){
				$this->assign('message','验证码错误');
			}else{
				$login_name = $_POST['login_name'];
				if(preg_match('/^\w+$/',$login_name)){
					$password = $_POST['password'];
					$adminModel = new Model('Admin');
					$resultSet = $adminModel->where("login_name='$login_name'")->find();
					// dump($resultSet);
					if(($resultSet !== false) and (md5($password) === $resultSet['password'])){
						Session::set('admin_id',$resultSet['admin_id']);
						Session::set('permission',$resultSet['permission']);
						Session::set('real_name',$resultSet['real_name']);
						$this->redirect('admin');
						// dump($_SESSION);
					}else{
						$this->assign('message','账户密码有误');
					}
				}else{
					$this->assign('message','账户输入有误');
				}
			}
		}
		$this->display();
	}

	/**
	 * logout 
	 * 安全登出,删除SESSION变量,并跳转回主页
	 * @access public
	 * @return void
	 */
	public function logout(){
		Session::clear();
		// dump($_SESSION);
		// Session::destroy();
		// dump($_SESSION);
		header("Content-Type:text/html; charset=utf-8");
		$this->redirect('Home-Index/',null,3,'登出成功,3秒后你将跳转回主页..');
	}

	/**
	 * admin 
	 * 管理页面
	 *   若为超级管理员,这在模板中关联$super_admin变量
	 * @access public
	 * @return void
	 */
	public function admin(){
		if($this->checkLogin() === true ){
			// if($_SESSION['permission'] === '0'){
				// $this->assign('super_admin',true);
			// }
			// $this->display();
			$this->redirect("NewsAdmin/add");
		}
	}

	/**
	 * modify 
	 * 修改资料,包括用户名和密码
	 *    通过POST的方式传入想修改成的用户名或密码(两者任选其一),变量名分别为real_name,password
	 * @access public
	 * @return void
	 */
	public function modify(){
		if($this->checkLogin() === true ){
			if(isset($_POST['real_name'])){
				$data['real_name'] = $_POST['real_name'];
				$adminModel = new Model('Admin');
				if($adminModel->where("admin_id='{$_SESSION['admin_id']}'")->save($data)){
					$_SESSION['real_name'] = $data['real_name'];
					$this->assign('message','用户名修改成功');
				}else{
					$this->assign('message','用户名修改失败,请重试');
				}
			}else if(isset($_POST['password'])){
				$data['password'] = md5($_POST['password']);
				$adminModel = new Model('Admin');
				if($adminModel->where("admin_id='{$_SESSION['admin_id']}'")->save($data)){
					$this->assign('message','密码修改成功');
				}else{
					$this->assign('message','密码修改失败,请重试');
				}
			}
			$this->assign('real_name',$_SESSION['real_name']);
			$this->display();
		}
	}

	/**
	 * addAdmin 
	 * 添加一般管理员(此功能仅限于超级管理员使用)
	 *   通过POST方式传入账号,用户名和密码,变量名分别为login_name,real_name,password
	 *   不传入参数则显示添加管理员页面
	 * @access public
	 * @return void
	 */
	public function addAdmin(){
		if($this->checkLogin() === true and $_SESSION['permission'] === '0'){
			if(isset($_POST['login_name']) and isset($_POST['real_name']) and isset($_POST['password'] )){
				$data['login_name'] = $_POST['login_name'];
				$data['real_name'] = $_POST['real_name'];
				$data['password'] = md5($_POST['password']);
				$data['permission'] = 1;
				$adminModel = new Model('Admin');
				if($adminModel->add($data)){
					$this->assign('message','添加管理员成功');
				}
			}
			$this->display();
		}else{
			header("Content-Type:text/html; charset=utf-8");
			$this->redirect('login',null,3,"你不具备添加一般管理员的权力,3秒后为你跳转到登录页面..");
		}
	}

	/**
	 * modifyAdmin 
	 * 修改一般管理员的资料(包括修改管理员密码和用户名)
	 *   用POST方式传入用户名和管理员密码,变量名分别为real_name,password
	 * @access public
	 * @return void
	 */
	public function modifyAdmin(){
		if($this->checkLogin() === true and $_SESSION['permission'] === '0'){
			$adminModel = new Model('Admin');
			if(isset($_POST['real_name']) and isset($_POST['password']) and isset($_POST['admin_id'])){
				$data['real_name'] = $_POST['real_name'];
				if($_POST['password'] !== ''){
					$data['password'] = md5($_POST['password']);
				}
				if($adminModel->where("admin_id={$_POST['admin_id']}")->save($data)){
					$this->assign('message','修改成功');
				}else{
					$this->assign('message','修改失败');
				}
			}
			$admins = $adminModel->where('permission=1')->field('admin_id,login_name,real_name')->select();
			// dump($admins);
			$this->assign('admins',$admins);
			$this->display();
		}else{
			header("Content-Type:text/html; charset=utf-8");
			$this->redirect('login',null,3,"你不具备修改一般管理员的权力,3秒后为你跳转到登录页面..");
		}
	}
	/**
	 * delAdmin 
	 * 删除一般管理员(此功能仅限于超级管理员使用)
	 *   通过GET方式传入要删除的账号的id,变量名为admin_id
	 *   不传入参数则显示删除管理员页面
	 * @access public
	 * @return void
	 */
	public function delAdmin(){
		if($this->checkLogin() === true and $_SESSION['permission'] === '0'){
			$adminModel = new Model('Admin');
			if(isset($_GET['admin_id'])){
				if($adminModel->where("admin_id='{$_GET['admin_id']}'")->delete()){
					$this->assign('message','删除成功');
				}else{
					$this->assign('message','删除失败,请重试');
				}
			}
			$this->redirect('modifyAdmin');
		}else{
			header("Content-Type:text/html; charset=utf-8");
			$this->redirect('login',null,3,"你不具备删除一般管理员的权力,3秒后为你跳转到登录页面..");
		}
	}

	/**
	 * checkLogin 
	 * 检测用户是否合法登陆,通过检测登陆后设置的SESSION变量是否存在来检测,若为非法, 提示错误.并调转到登陆页面
	 * @access public
	 * @return void
	 */
	public function checkLogin(){
		if(isset($_SESSION['admin_id'])){
			return true;
		}else{
			header("Content-Type:text/html; charset=utf-8");
			$this->redirect('login',null,3,"非法登录,3秒后为你跳转到登录页面..");
			return false;
		}
	}

	/**
	 * verify 
	 * 输出验证码图片,并在SESSION中记录验证码,记录名字为verify
	 * @access public
	 * @return void
	 */
	public function verify(){
		import("ORG.Util.Image");
		Image::buildImageVerify();
	}
}
?>
